home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / tex / sed15.zip / SED.H < prev    next >
C/C++ Source or Header  |  1991-09-30  |  5KB  |  85 lines

  1. /* sed.h -- types and constants for the stream editor */
  2.  
  3. /* data area sizes used by both modules */
  4. #define MAXBUF          4000    /* maximum size of all buffers */
  5. #define MAXAPPENDS      20      /* maximum number of appends */
  6. #define MAXTAGS         9       /* tagged patterns are \1 to \9 */
  7. #define MAXPLUS        50    /* maximum number of +n addresses*/
  8.  
  9. /* constants for compiled-command representation */
  10. #define EQCMD   0x01    /* = -- print current line number               */
  11. #define ACMD    0x02    /* a -- append text after current line  */
  12. #define BCMD    0x03    /* b -- branch to label                         */
  13. #define CCMD    0x04    /* c -- change current line             */
  14. #define DCMD    0x05    /* d -- delete all of pattern space             */
  15. #define CDCMD   0x06    /* D -- delete first line of pattern space      */
  16. #define GCMD    0x07    /* g -- copy hold space to pattern space        */
  17. #define CGCMD   0x08    /* G -- append hold space to pattern space      */
  18. #define HCMD    0x09    /* h -- copy pattern space to hold space        */
  19. #define CHCMD   0x0A    /* H -- append hold space to pattern space      */
  20. #define ICMD    0x0B    /* i -- insert text before current line         */
  21. #define LCMD    0x0C    /* l -- print pattern space in escaped form     */
  22. #define NCMD    0x0D    /* n -- get next line into pattern space        */
  23. #define CNCMD   0x0E    /* N -- append next line to pattern space       */
  24. #define PCMD    0x0F    /* p -- print pattern space to output           */
  25. #define CPCMD   0x10    /* P -- print first line of pattern space       */
  26. #define QCMD    0x11    /* q -- exit the stream editor                  */
  27. #define RCMD    0x12    /* r -- read in a file after current line */
  28. #define SCMD    0x13    /* s -- regular-expression substitute           */
  29. #define TCMD    0x14    /* t -- branch on last substitute successful    */
  30. #define CTCMD   0x15    /* T -- branch on last substitute failed        */
  31. #define WCMD    0x16    /* w -- write pattern space to file             */
  32. #define CWCMD   0x17    /* W -- write first line of pattern space       */
  33. #define XCMD    0x18    /* x -- exhange pattern and hold spaces         */
  34. #define YCMD    0x19    /* y -- transliterate text                      */
  35. #define BRCMD   0x20    /* { -- grouping command  */
  36. #define NOCMD   0x21    /* Nop command*/
  37.  
  38. typedef struct  cmd_t                /* compiled-command representation */
  39. {
  40.         char    *addr1;                 /* first address for command */
  41.         char    *addr2;                 /* second address for command */
  42.         union
  43.         {
  44.                 char            *lhs;   /* s command lhs */
  45.                 struct cmd_t    *link;  /* branch address */
  46.         } u;
  47.         char    command;                /* command code */
  48.         char    *rhs;                   /* s command replacement string */
  49.     FILE    *fout;                  /* associated output file descriptor */
  50.         struct
  51.         {
  52.         unsigned nthone  :11;    /* if !0 only nth replace*/
  53.                 unsigned allbut  : 1;   /* was negation specified? */
  54.                 unsigned global  : 1;   /* was g postfix specified? */
  55.                 unsigned print   : 2;   /* was 1=p or 2=P postfix specified? */
  56.                 unsigned inrange : 1;   /* in the middle of an address range? */
  57.         } flags;
  58. }   sedcmd;         /* use this name for declarations */
  59.  
  60. /* address and regular expression compiled-form markers */
  61. #define STAR    1       /* mark for closure  orred into single RE marker*/
  62. #define CCHR    2       /* non-newline character to be matched follows */
  63. #define CDOT    4       /* dot (any character) marker */
  64. #define CCL     6       /* character class follows */
  65. #define CNL     8       /* match line start */
  66. #define CDOL    10      /* match line end */
  67. #define CBRA    12      /* tagged pattern start marker */
  68. #define CKET    14      /* tagged pattern end marker */
  69. #define CBACK   16      /* backslash-digit pair marker */
  70. #define CLNUM   18      /* numeric-address index follows */
  71. #define CEND    20      /* symbol for end-of-line match */
  72. #define CEOF    22      /* end-of-field mark end of RE*/
  73. #define CPLUS   24     /* plus address indexes follow*/
  74. #define CBOW    26    /* begining of word test*/
  75. #define CEOW     28    /* end of word test*/
  76. #define MTYPE   32      /* multiple counts orred into single RE marker*/
  77. #define ARGMARK -128    /*mark a replaceable in REs */
  78.  
  79. #ifdef DEBUG
  80. #define PASS(x) fprintf(stderr,"%s\n",x)
  81. #else
  82. #define PASS(x)
  83. #endif
  84. /* sed.h ends here */
  85.